#ifndef __ZLIB_H_
#define __ZLIB_H_
#define CALL_FUNC_ARGS_FMT char*
/*
void call_func(int flag,void (**f)(CALL_FUNC_ARGS_FMT),CALL_FUNC_ARGS_FMT w);

void call_func(int flag,void (**f)(CALL_FUNC_ARGS_FMT),CALL_FUNC_ARGS_FMT w){
	while(flag){
		f[(int)log2(flag)](w);
		flag -= (int)pow(2,(int)log2(flag));
	}
}
*/
#define call_func(flag,f,w) do{\
	while((flag)){\
		(f)[(int)log2((flag))]((w));\
		(flag) -= (int)pow(2,(int)log2((flag)));\
	}\
}while(0)
#endif
